package com.xcity.game.combat.unit;

import java.util.List;

import com.xcity.game.combat.attr.CombatAttributeListener;
import com.xcity.game.skill.Skill;

import naga.x.game.GameUnit;

public interface Combatable extends GameUnit, CombatAttributeListener {
	
	byte PLAYER = 0, EMPLOYEE = 1, NPC = 2;

//	/**
//	 * 力量strength
//	 * @return
//	 */
//	@Deprecated
//	public float getSTR(); // 力strength
//	
//	/**
//	 * 智力intelligence
//	 * @return
//	 */
//	@Deprecated
//	public float getINT(); // 智intelligence
//	
//	/**
//	 * 敏捷agility
//	 * @return
//	 */
//	@Deprecated
//	public float getAGI(); // 敏agility
//	
//	/**
//	 * 精神spirit
//	 * @return
//	 */
//	@Deprecated
//	public float getSPI(); // 精spirit
//	
//	/**
//	 * 耐力stamina
//	 * @return
//	 */
//	@Deprecated
//	public float getSTA(); // 耐stamina
	
	/**
	 * 物攻
	 * @return
	 */
	public float getAttackPower();
	
	/**
	 * 法攻
	 * @return
	 */
	public float getMagicPower();
	
	/**
	 * 物防
	 * @return
	 */
	public float getDefense();
	
	/**
	 * 法防
	 * @return
	 */
	public float getMagicDefense();
	
	/**
	 * 暴击
	 * @return
	 */
	public float getCrit();
	
	/**
	 * 韧性（免暴）
	 * @return
	 */
	public float getAvoidCrit();
	
	/**
	 * 生命值
	 * @return
	 */
	public int getHp();
	
	/**
	 * 最大生命值
	 * @return
	 */
	public int getMaxHp();
	
	/**
	 * 能量值
	 * @return
	 */
	public int getMp();
	
	/**
	 * 最大能量值
	 * @return
	 */
	public int getMaxMp();
	
	/**
	 * 攻速
	 * @return
	 */
	public int getAttackSpeed();
	
	/**
	 * 暴伤
	 * @return
	 */
	@Deprecated
	public float getCritDamage();
	
	/**
	 * 闪避
	 * @return
	 */
	public float getDodge();
	
	/**
	 * 抵抗
	 * @return
	 */
	public float getResist();
	
	/**
	 * 物攻命中
	 * @return
	 */
	public float getHitRate();
	
	/**
	 * 法攻命中
	 * @return
	 */
	public float getMagicHitRate();
	
	/**
	 * 携带技能
	 * @return
	 */
	public List<? extends Skill> getSkills();

	@Override
	default void fireAttributesChanged(int mask) {
	}
	
	
}
